package com.neusoft.crm.service;

import com.neusoft.crm.po.SaleChance;
import com.neusoft.crm.po.SysUser;

import java.util.List;

/**
 * 销售机会接口
 *
 * @author msprc
 */
public interface ISaleChanceService {
    /**
     * 根据状态查询销售机会
     *
     * @param saleChance 销售机会
     * @return 指定状态的销售机会
     */
    List<SaleChance> selectSaleChanceByStatus(SaleChance saleChance);

    /**
     * 插入销售机会
     *
     * @param saleChance 销售机会
     * @return 受影响的行数
     */
    int insertSaleChance(SaleChance saleChance);

    /**
     * 修改销售机会
     *
     * @param saleChance 销售机会
     * @return 受影响的行数
     */
    int updateSaleChance(SaleChance saleChance);

    /**
     * 删除销售机会
     *
     * @param saleChance 销售机会
     * @return 受影响的行数
     */
    int deleteSaleChance(SaleChance saleChance);

    /**
     * 指派销售机会
     *
     * @param saleChance 销售机会
     * @return 受影响的行数
     */
    int assignSalesChance(SaleChance saleChance);

    /**
     * 查找已经指派给我的销售机会
     *
     * @param saleChance 带有目标用户的ID
     * @return 销售机会列表
     */
    List<SaleChance> selectAssignedSalesChance(SaleChance saleChance);


    /**
     * 通过模糊查询查找销售机会
     *
     * @param saleChance 销售机会
     * @return 机会列表
     */
    List<SaleChance> selectSaleChanceByTag(SaleChance saleChance);

    /**
     * 通过id精确查询查找销售机会
     *
     * @param saleChance 销售机会
     * @return 机会列表
     */
    SaleChance selectSalesChanceById(SaleChance saleChance);

    /**
     * 通过销售机会状态，state=3，返回系统用户
     *
     * @param saleChance 销售机会
     * @return 系统用户对象
     */
    List<SysUser> selectSysUserNameBySaleChanceState(SaleChance saleChance);
}
